﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Data;
using RegistroMascotas.Modelo;

namespace Service
{
    public class GestorDeRegistro
    {

        public static List<string> traerTipoUsuarioTodos(string tipoUsuarioLogueado) {
            List<string> resultado = new List<string>();

            try
            {
                List<string> tipos = Data.PersonaDAO.traerTipoUsuarioTodos();
                

                if (tipos != null)
                {
                    if (tipoUsuarioLogueado == "Centro")
                    {
                        foreach (string tipo in tipos)
                        {
                            if (tipo != "Admin" && tipo != "Centro")
                            {
                                resultado.Add(tipo);
                            }
                        }
                    }
                    else if (tipoUsuarioLogueado == "Admin") {
                        foreach (string tipo in tipos)
                        {
                            if (tipo != "Admin" && tipo != "Dueño" && tipo != "Veterinario")
                            {
                                resultado.Add(tipo);
                            }
                        }
                    }
                }
                else
                {
                    resultado.Add("Sin tipo de usuarios");
                }
            }
            catch (Exception e)
            {
                throw e;
            }

            return resultado;
        }

        public static bool registrarDueñoVeterinario(Object usuario,int tipoUsuario) {
            bool exito = false;
            Veterinario v = null;
            Dueño d = null;

            try
            {
                switch (tipoUsuario) { 
                    case 3:
                        d = (Dueño)usuario;
                        
                        if (!PersonaDAO.comprobarUsuarioRepetido(d.Usuario))
                        {
                            exito = PersonaDAO.registrarDueño(d);
                        }
                        else
                        {
                            throw new Exception("El nombre de usuario que desea registrar, ya está siendo utilizado. Pruebe otro nombre.");
                        }             
                        break;
                    case 4:
                        v = (Veterinario)usuario;
                        if (!PersonaDAO.comprobarUsuarioRepetido(v.Usuario))
                        {
                            exito = PersonaDAO.registrarVeterinario(v);
                        }
                        else
                        {
                            throw new Exception("El nombre de usuario que desea registrar, ya está siendo utilizado. Pruebe otro nombre.");
                        }             
                        break;
                }                   
            }
            catch (Exception ex)
            {                
                throw ex;
            }

            return exito;
        }

        public static bool registrarCentro(Object usuario, int tipoUsuario)
        {
            bool exito = false;
            Centro c = null;

            try
            {
                c = usuario as Centro;

                if (!PersonaDAO.comprobarUsuarioRepetido(c.Nombre))
                {
                    exito = PersonaDAO.registrarCentro(c);
                }
                else
                {
                    throw new Exception("El nombre de usuario que desea registrar, ya está siendo utilizado. Pruebe otro nombre.");
                }
             
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return exito;
        }
    }
}
